<template>
  <div>
    <input type="text" class="e-input" v-model="value" @input="inputChange" />
  </div>
</template>

<script>
import { ref, watch } from 'vue'
export default {
  name: 'e-input-index',
  props: {
    modelValue: {
      type: String
    }
  },
  setup (props, ctx) {
    const value = ref(props.modelValue)
    // 需要监听父组件中的改变，实现父组件中的数据发生改变及时更新子组件内的数据
    watch(() => {
      return props.modelValue
    }, () => {
      // 监听的数据发生改变后要及时更新数据，把modelValue的值及时更新
      value.value = props.modelValue
    })

    // 改变后及时更新父组件的数据
    const inputChange = () => {
      // 触发一下那个自定义事件
      ctx.emit('update:modelValue', value.value)
    }
    return {
      value, inputChange
    }
  }

}
</script>

<style lang="less" scoped>
.e-input {
  width: 500px;
  height: 50px;
  font-size: 45px;
  border: 2px solid red;
  background-color: pink;
}
</style>
